package com.wh.wisdomsite.xbox.pr.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.wh.wisdomsite.xbox.pr.entity.Project;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Repository;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 工程项目方法Dao
 * @package com.wh.wisdomsite.xbox.pr.dao
 * @author 蔡道行
 * @version V1.0
 * @date 16:17 2018/8/2
 * @Copyright 公司版权所有
 * @Company 贵州万华科技有限公司Copyright (c) 2014
 */
@Repository
public interface ProjectMapper extends BaseMapper<Project> {


    /**
     * 根据条件获取工程集合
     * @param project 工程对象
     * @return
     */
    List<Project> getProjcetsByPage(Project project);



    /**
     * 获取完整信息的Project
     * @param id
     * @return
     */
    Map<String,Object> getMapById(@Param(value = "id")Serializable id);

    /**
     * 获取完整信息的Project分页列表
     * @param var1
     * @param var2
     * @return
     */
    List<Map<String,Object>> getMapsPage(RowBounds var1, @Param("ew")Wrapper<Project> var2);




    /**
     * 根据公司ID查询项目
     * @param companyId
     * @return
     */
    List<Project> selectProjectListByCompanyId(@Param(value = "companyId") Integer companyId);

    /**
     * 根据部门ID查询项目
     * @param officeId
     * @return
     */
    List<Project> selectProjectListByOfficeId(@Param(value = "officeId") Integer officeId);

    /**
     * 根据公司、部门编码获取工程
     * @param compCode
     * @param officeCode
     * @return
     */
    List<Project> selectByCode(@Param(value = "compCode")String compCode,@Param(value = "officeCode")String officeCode);

    /**
     * 根据公司、部门编码获取工程map
     * @param var1
     * @param compCode
     * @param officeCode
     * @return
     */
    List<Map<String,Object>> selectMapByCode(RowBounds var1, @Param("ew")Wrapper<Project> var2,
                                             @Param(value = "compCode")String compCode,
                                             @Param(value = "officeCode")String officeCode);


    /**
     * 配置端获取Project详情
     * @param id
     * @return
     */
    Map<String,Object> getCcProjectMapById(@Param(value = "id")Serializable id);

    /**
     * 配置端获取完整信息的Project分页列表
     * @param var1
     * @param var2
     * @return
     */
    List<Map<String,Object>> getCcProjectMapsPage(RowBounds var1, @Param("ew")Wrapper<Project> var2);

    /**
     * 根据ID获取项目
     * @param id
     * @return
     */
    Project getById(@Param("id") Serializable id);
}
